package cn.cleanarch.infra.idp.pms.service;

import cn.cleanarch.infra.idp.commons.domain.dto.PageResult;
import cn.cleanarch.infra.idp.pms.domain.dto.ProjectCategoryDTO;
import cn.cleanarch.infra.idp.pms.domain.entity.ProjectCategory;
import cn.cleanarch.infra.idp.pms.domain.query.ProjectCategoryQuery;

import java.util.List;

/**
 * 项目分类服务接口
 */
public interface ProjectCategoryService {
    
    /**
     * 分页查询项目分类
     * 
     * @param query 查询条件
     * @return 分页结果
     */
    PageResult<ProjectCategoryDTO> pageQuery(ProjectCategoryQuery query);
    
    /**
     * 获取所有项目分类
     * 
     * @return 分类列表
     */
    List<ProjectCategoryDTO> listAll();
    
    /**
     * 根据ID获取项目分类
     * 
     * @param id 分类ID
     * @return 分类
     */
    ProjectCategory getById(Long id);
    
    /**
     * 创建项目分类
     * 
     * @param dto 分类DTO
     * @return 创建后的分类
     */
    ProjectCategoryDTO create(ProjectCategoryDTO dto);
    
    /**
     * 更新项目分类
     * 
     * @param dto 分类DTO
     * @return 更新后的分类
     */
    ProjectCategoryDTO update(ProjectCategoryDTO dto);
    
    /**
     * 删除项目分类
     * 
     * @param id 分类ID
     * @return 是否删除成功
     */
    Boolean delete(Long id);
}